import router from '../router/index'
import axios from 'axios'
import { Toast } from 'vant'

let loading
// 请求开始动画
const loadingStart = () => {
  loading = Toast.loading({
    message: '加载中...',
    forbidClick: true,
    loadingType: 'spinner'
  })
}
// 请求结束
const loadingEnd = () => {
  loading.clear()
}

// 请求拦截
axios.interceptors.request.use(config => {
  // 使用加载动画
  loadingStart()

  // 判断localStorage中是否存在token
  if (localStorage.todo_token) {
    config.headers.Autherization = localStorage.todo_token
  }
  return config
}, err => {
  return Promise.reject(err)
})

// 响应拦截
axios.interceptors.response.use(config => {
  // 结束加载动画
  loadingEnd()
  return config
}, (error) => {
  Toast.fail('请求失败')

  // 获取错误的状态码
  const {
    status
  } = error.response

  if (status === 401) {
    Toast.fail('登录过期，请重新登录')

    // 清除过期的token
    localStorage.removeItem('todo_token')

    // 跳转到登录页面
    router.push('/login')
  }
  // 返回错误信息
})

export default axios
